$(document).ready(
    function()
    {
        $(window).resize(
            function()
            {
                $('#espDisable').css("height",$(document).height());
                $('#espDisable').css("width",$(document).width());
                $('.popUp').css("top", ($(window).height() - $('.popUp').outerHeight()) / 2 + $(window).scrollTop() + "px");
                $('.popUp').css("left", ($(window).width() - $('.popUp').outerWidth()) / 2 + $(window).scrollLeft() + "px");
            }
        );
        $('.popUp').each(
            function()
            {
                $(this).css("top", ($(window).height() - $(this).outerHeight())
                    / 2 + $(window).scrollTop() + "px");
                $(this).css("left", ($(window).width() - $(this).outerWidth())
                    / 2 + $(window).scrollLeft() + "px");
            }
        );
        $('.unCompte:odd').addClass('impair');
        // On détermine l'image pour la prochaine et la dernière page
        var num = $('#numPage').val();
        if(num <= 1)
        {
            $('#prevComptes').attr('src', 'Images/prev_disabled.png');
            $('#prevComptes').removeClass('pointer');
        }
        if($('#totComptes').val() <= ($('#numPage').val() * 20))
        {
            $('#nextComptes').attr('src', 'Images/next_disabled.png')
            $('#nextComptes').removeClass('pointer');
        }

        // Fonction pour faire la recherche au click du bouton
        $('#btnRecherche').click(
            function()
            {
                $('#formRecherche').submit();
            }
        );

        // Fonction pour faire la recherche en appuyant sur la touche "Enter" dans un critère
        $('.critere').keypress(
            function(e)
            {
                if(e.keyCode == 10 || e.keyCode == 13)
                {
                    $('#btnRecherche').click();
                    e.preventDefault();
                }
            }
        );

        // Fonction pour ouvrir la fenêtre de nouveau compte
        $('#btnNouveau').click(
            function()
            {
                // On réinitialise les champs et les erreurs avant l'ouverture
                $('#errNouvVide').hide();
                $('#errNouveau').hide();
                $('#errPassword').hide();

                $('#nouveauVerifPassword').removeClass('invalide');
                $('.infoNouveau').each(
                    function()
                    {
                        $(this).removeClass('invalide');
                    }
                );

                $('#nouveauUsername, #nouveauPassword, #nouveauVerifPassword').val('');
                $('#nouveauPrenom, #nouveauNom, #nouveauCourriel, #nouveauCode').val('');
                $('#nouveauSexe').val('M');
                $('#nouveauDomaine').val('aucun');
                $('#nouveauStatut').val('élève');

                $('#espDisable').show();
                $('#espDisable').css("height",$(document).height());
                $('#espDisable').css("width",$(document).width());
                $('#espNouvCompte').fadeIn(250);
                $('#espNouvCompte').css("top", ($(window).height() - $('#espNouvCompte').outerHeight()) / 2 + $(window).scrollTop() + "px");
                $('#espNouvCompte').css("left", ($(window).width() - $('#espNouvCompte').outerWidth()) / 2 + $(window).scrollLeft() + "px");
            }
        );

        // Fonction faisant en sorte qu'un seul compte est coché à la fois
        $('.chkCompte').change(
            function()
            {
                var idCheck = $(this).attr('id');
                if($(this).is(':checked'))
                {
                    $('.chkCompte').each(
                        function()
                        {
                            if($(this).attr('id') != idCheck)
                            {
                                $(this).attr('checked', false);
                            }
                        }
                    );
                }
            }
        );

        // Fonction pour la validation du nom d'usager
        $('#nouveauUsername').keypress( 
            function(e) 
            {
                if(e.keyCode == 20)
                {
                    e.preventDefault;
                }
            }
        ).blur(
            function()
            {
                var valeur = $(this).val().replace(/ /,'');
                $(this).val(valeur);
                if(valeur != '')
                {
                    validerUsername(valeur);
                    var vide = false;
                    $('.infoNouveau').each(
                        function()
                        {
                            if($(this).val().replace(/ /, '') == '')
                            {
                                vide = true;
                            }
                        }
                    );
                    if(vide)
                    {
                        $('#errNouvVide').show();
                    }
                    else
                    {
                        $('#errNouvVide').hide();
                    }
                } 
                else
                {
                    $('#errNouvVide').show();
                    $(this).addClass('invalide');
                }
            }
        );

        // Fonction pour la validation du mot de passe
        $('#nouveauPassword').keypress(
            function(e)
            {
                if(e.keyCode == 20)
                {
                    e.preventDefault;
                }
            }
        ).blur(
            function()
            {
                var valeur = $(this).val().replace(/ /,'');
                $(this).val(valeur);
                if(valeur != '')
                {
                    $(this).removeClass('invalide');
                    var vide = false;
                    $('.infoNouveau').each(
                        function()
                        {
                            if($(this).val().replace(/ /, '') == '')
                            {
                                vide = true;
                            }
                        }
                    );
                    if(vide)
                    {
                        $('#errNouvVide').show();
                    }
                    else
                    {
                        $('#errNouvVide').hide();
                    }
                    
                    // On vérifie si les deux champs de mot de passe sont pareils
                    if($(this).val() != $('#nouveauVerifPassword').val())
                    {
                        $('#errPassword').show();
                        $(this).addClass('invalide');
                    } 
                    else
                    {
                        $('#errPassword').hide();
                        $(this).removeClass('invalide');
                    }
                } 
                else
                {
                    $('#errNouvVide').show();
                    $(this).addClass('invalide');
                }
            }
        );

        // Fonction pour s'assurer que les deux champs de mot de passe sont identiques
        $('#nouveauVerifPassword').blur(
            function()
            {
                if($(this).val() != $('#nouveauPassword').val())
                {
                    $('#errPassword').show();
                    $(this).addClass('invalide');
                } 
                else
                {
                    $('#errPassword').hide();
                    $(this).removeClass('invalide');
                }
            }
        );

        // Fonction pour la validation du nom et du prénom
        $('#nouveauPrenom, #nouveauNom').blur(  
            function()
            {
                if($(this).val().replace(/ /,'') == '')
                {
                    $(this).addClass('invalide');
                }
                else
                {
                    $(this).removeClass('invalide');
                }

                var vide = false;
                $('.infoNouveau').each(
                    function()
                    {
                        if($(this).val().replace(/ /, '') == '')
                        {
                            vide = true;
                        }
                    }
                );
                if(vide)
                {
                    $('#errNouvVide').show();
                }
                else
                {
                    $('#errNouvVide').hide();
                }
            }
        );

        // Fonction pour la validation du courriel
        $('#nouveauCourriel').blur(
            function()
            {
                var regex = /(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/;
                var valeur = $(this).val().replace(/ /,'');

                if(valeur == '')
                {   
                    $(this).addClass('invalide');
                }
                else if(!(regex.test(valeur)))
                {   
                    $(this).addClass('invalide');
                    $('#errCourriel').show();
                }
                else
                {
                    $(this).removeClass('invalide');
                    $('#errCourriel').hide();
                }

                var vide = false;
                $('.infoNouveau').each(
                    function()
                    {
                        if($(this).val().replace(/ /, '') == '')
                        {
                            vide = true;
                        }
                    }
                );
                if(vide)
                {
                    $('#errNouvVide').show();
                }
                else
                {
                    $('#errNouvVide').hide();
                }
            }
        );

        // Fonction pour soumettre les informations du nouveau compte, si tout est valide
        $('#btnAccepterNouveau').click(
            function()
            {
                var regex = /(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/;
                var valide = true;
                var vide = false;
                $('.infoNouveau').each(
                    function()
                    {
                        if($(this).val().replace(/ /, '') == '')
                        {
                            vide = true;
                            $(this).addClass('invalide');
                        }
                    }
                );
                    
                if(vide)
                {
                    $('#errNouvVide').show();
                    valide = false;
                } 
                else
                {
                    var valeur = $('#nouveauCourriel').val().replace(/ /,'');
                    
                    $('#errNouvVide').hide();
                    // On vérifie les mots de passe et le courriel
                    if($('#nouveauVerifPassword').val() != $('#nouveauPassword').val())
                    {
                        $('#errPassword').show();
                        valide = false;
                    } 
                    else
                    {
                        $('#errPassword').hide();
                    }
                    
                    if(!(regex.test(valeur)))
                    {
                        $('#errCourriel').show();
                        valide = false;
                    }
                }
                
                if(valide)
                {
                    $('#formNouveauCompte').submit();
                }
                else
                {
                    alert($('#gestionCompteAlertErr').val());
                }
            }
        );

        // Fonction pour fermer la fenêtre de nouveau compte
        $('.annulerNouveau').click(
            function()
            {
                $('#espDisable').hide();
                $('#espNouvCompte').fadeOut(250);
            }
        );

        // Fonction pour ouvrir la fenêtre d'inscription aux cours
        $('#btnInscription').click(
            function()
            {
                var idCompte = '';
                
                // On gère la possibilité qu'il n'y aille pas de résultats
                if($('.chkCompte') !== undefined)
                {
                    // On va chercher le compte sélectionné
                    $('.chkCompte').each(
                        function()
                        {
                            if($(this).is(':checked'))
                            {
                                idCompte = $(this).attr('id').substring(3);
                            }
                        }
                    );

                    if(idCompte == '')
                    {
                        alert($('#gestionCompteAlertSelect').val());
                    }
                    else if($('#statut' + idCompte).val() == 'administrateur' ||
                                  $('#statut' + idCompte).val() == 'professeur')
                    {
                        alert($('#gestionCompteAlertInscription').val());
                    }
                    else
                    {
                        $('#txtRecherche').val('');
                        $('#domaineInscription').val('aucun');
                        $('#idCompteInscription').val(idCompte);
                        $('#resultatsRecherche').children().remove();
                        $('#choixRecherche').children().remove();

                        // On va chercher les cours déjà inscrits
                        $('#lstCours' + idCompte + ' li').each(
                            function()
                            {
                                var idCours = $(this).attr('idCours');
                                $('#choixRecherche').append('<li class="pointer">' + '<input type="hidden" id="choix' + idCours + '" name="choix_' + idCours + '" value="' + idCours + '">' + $(this).html() + '</li>');
                                $('#choixRecherche li').click(
                                    function()
                                    {
                                        $(this).remove();
                                    }
                                );
                            }
                        );

                        $('#espDisable').show();
                        $('#espDisable').css("height",$(document).height());
                        $('#espDisable').css("width",$(document).width());
                        $('#espInscription').fadeIn(250);
                        $('#espInscription').css("top", ($(window).height() - $('#espInscription').outerHeight()) / 2 + $(window).scrollTop() + "px");
                        $('#espInscription').css("left", ($(window).width() - $('#espInscription').outerWidth()) / 2 + $(window).scrollLeft() + "px");
                    }
                }                    
            }
        );

        $('#txtRecherche').keypress(
            function(e)
            {
                if(e.keyCode == 10 || e.keyCode == 13)
                {
                    $('#btnRechercher').click();
                    e.preventDefault();
                }
            }
        );

        //Fonctions pour exécuter la recherche de cours
        $('#btnRechercher').click(
            function()
            {
                var nom = $('#txtRecherche').val();
                if(nom.replace(/ /, '').toLowerCase() != '')
                {
                    var domaine = $('#domaineInscription').val();
                    chercherCours(nom, domaine);
                }
            }
        );

        //Fonction pour retirer un destinataire de la sélection
        $('#choixRecherche li').click(
            function()
            {
                $(this).remove();
            }
        );

        // Fonction qui ajoute les destinataires choisis au message
        $('#accepterCours').click(
            function()
            {
                if($('#choixRecherche').children().length > 0 )
                {
                    $('#formInscription').submit();
                }
            }
        );

        // Fonction pour fermer la fenêtre d'inscription aux cours
        $('.annulerInscription').click(
            function()
            {
                $('#espDisable').hide();
                $('#espInscription').fadeOut(250);
            }
        );

        // Fonction pour aller, si possible, à la prochaine page de messages 
        $('#prevComptes').click(
            function()
            {
                var numero = $('#numPage').val();
                if(numero > 1)
                {
                    $('#numPage').val(--numero);
                    $('#formChangementPage').submit();
                }
            }
        );

        // Fonction pour aller, si possible, à la page précédente de messages 
        $('#nextComptes').click(
            function()
            {
                var numero = $('#numPage').val();
                if($('#totComptes').val() > ($('#numPage').val() * 20))
                {
                    $('#numPage').val(++numero);
                    $('#formChangementPage').submit();
                }
            }
        );
    }
);